实例化器 (Instantiator) 可用于实例化器 (Instantiator) 节点选中的 3D 节点或 3D 节点树的外观。实例化器 (Instantiator) 节点包含一个对目标节点或节点树的引用。当 Kanzi 渲染实例化器 (Instantiator) 节点时,它会复制 实例化器 (Instantiator) 节点目标的对象外观。这意味着对目标节点进行的所有更改都会反映在实例化器 (Instantiator) 节点中。例如,您可以使用实例化器 (Instantiator) 节点创建一个反射。请参阅 教程:创建反射。
每个实例化器 (Instantiator) 节点都具有独特的变换,因此您可以将一个以上的实例化器 (Instantiator) 节点作为同一个对象的目标。您无法重写实例化器 (Instantiator) 节点中的其他属性,因此所有实例都是相同的。但会对每个实例化器 (Instantiator) 节点单独进行渲染。例如,这样可以使光源对不同位置的实例化器 (Instantiator) 节点产生不同的影响。
要为节点创建真正独特的实例,请将节点转换为预设件,并使用预设件的实例。请参阅 使用预设件。
请注意,实例化器 (Instantiator) 节点只会影响渲染。由于实例化器 (Instantiator) 节点的布局大小为 0,因此您无法在布局中使用它。实例化的节点将不具有交互性。
要创建实例化器 (Instantiator) 节点:
要从节点创建实例化器 (Instantiator) 节点:
要使用实例化器节点创建反射。
//创建一个名为 Instantiator3D 的实例化器节点。 Instantiator3DSharedPtr instantiator = Instantiator3D::create(domain, "Instantiator3D"); //设置实例化器节点要反射的目标对象。 instantiator->setTarget(targetNode); //设置实例化器节点的非均匀缩放,以便在 //整个 xz 平面镜像目标对象。请注意,这样会使所有三角形倒置,因此您 //必须禁用实例化器的背面剔除渲染。 instantiator->setRenderTransformation(SRTValue3D::createScale(Vector3(1.0f, -1.0f, 1.0f)));
有关详细信息,请参阅 API reference 中的 Instantiator3D
类。
要查看 实例化器 (Instantiator) 可用属性类型和消息的列表,请参阅 Instantiator。